import { getRolePage, assignRoleMenus, getMenuList } from '@/api/system';
import { message } from 'antd';

// 为 admin 角色分配所有权限的函数
export const setupAdminPermissions = async () => {
  // 获取所有角色
  const rolesResponse = await getRolePage({ pageNo: 1, pageSize: 100 });
  const roles = rolesResponse.list;

  // 查找 admin 角色
  const adminRole = roles.find(role => role.code === 'admin');

  if (!adminRole) {
    throw new Error('未找到 admin 角色');
  }

  // 获取所有菜单（包括目录、菜单、权限）
  const menus = await getMenuList();

  // 为 admin 角色分配所有菜单和权限
  const allMenuIds = menus.map(menu => menu.id);

  await assignRoleMenus(adminRole.id, allMenuIds);

  // Admin 权限分配完成
  return true;
};

// 便捷函数：直接调用并显示消息
export const setupAdminPermissionsWithMessage = async () => {
  try {
    await setupAdminPermissions();
    message.success('Admin 权限分配成功！');
    return true;
  } catch (error) {
    message.error('Admin 权限分配失败：' + (error as Error).message);
    return false;
  }
};

export default setupAdminPermissions;